// #include <iostream>
// #include<string>
// #include <queue>
// #include<vector>
// #include <functional>
// using namespace std;
//
//
// void test_priority_queue()
// {
//     //默认从大到小
//     // priority_queue<int> q;
//     // priority_queue<int,vector<int>,less<int>> q;
//     //出队从小到大
//     priority_queue<int,vector<int>,greater<int>> q;
//     q.push(1);
//     q.push(3);
//     q.push(5);
//
//     while (!q.empty())
//     {
//         cout << q.top() << "\t";
//         q.pop();
//     }
//     cout << endl;
// }
//
// class MM
// {
// public:
//     MM(string name, int age)
//         : name(name),
//           age(age)
//     {
//     }
//
//    string get_name() const
//     {
//         return name;
//     }
//
//     int get_age() const
//     {
//         return age;
//     }
//
//     friend bool operator<(const MM& lhs, const MM& rhs)
//     {
//         if (lhs.name < rhs.name)
//             return true;
//         if (rhs.name < lhs.name)
//             return false;
//         return lhs.age < rhs.age;
//     }
//
//     friend bool operator<=(const MM& lhs, const MM& rhs)
//     {
//         return !(rhs < lhs);
//     }
//
//     friend bool operator>(const MM& lhs, const MM& rhs)
//     {
//         return rhs < lhs;
//     }
//
//     friend bool operator>=(const MM& lhs, const MM& rhs)
//     {
//         return !(lhs < rhs);
//     }
//
// protected:
//     string name;
//     int age;
// };
//
// // bool compare_by_age(const MM& one,const MM& two)
// // {
// //     return one.get_age()<two.get_age();
// // }
// struct compare_by_age
// {
//     bool operator()(const MM& one,const MM& two)const
//     {
//         return one.get_age()<two.get_age();
//     }
// };
// void test_user_data()
// {
//     priority_queue<MM> mm1;
//     mm1.push(MM("1",1));
//     mm1.push(MM("2",2));
//
//     while (!mm1.empty())
//     {
//         cout << mm1.top().get_name() << "\t";
//         mm1.pop();
//     }
//     cout << endl;
//
//     priority_queue<MM,vector<MM>,compare_by_age> mm2;
//     mm2.push(MM("1",1));
//     mm2.push(MM("2",2));
//
//     while (!mm2.empty())
//     {
//         cout << mm2.top().get_name() << "\t";
//         mm2.pop();
//     }
//     cout << endl;
// }
//
//
//
// int main()
// {
//     // test_priority_queue();
//     test_user_data();
//     return 0;
// }